//本地操作的数据存储和获取
$(function() {
	//是否已经监测了输入框的事件
	inputCheckBool = false;
	//手工测试的操作名字数组对象
	manualStepArray = [];
	//加载手工测试的操作名字
	getManualStep();
	initSetDataArray = [{signalType:1,value:0},{signalType:22,value:500}];//开始录制时设置的初始状态值
});


//灯显示
function dengShow(name){
	if($(".switchInput").find(".colorLights").length!==0){//平调模式不需要变灯的颜色
		var code = $("." + name + " option:selected").attr("signalvalue");
		setLightColor(code,name);
	}	
}
//监听数据变化，存储本地数据
function addListenerEventFun(){
	if(inputCheckBool){
		return;
	}
	inputCheckBool = true;
	$("select").on('change',function(e){
		localStorage.setItem('MAN'+e.target.className, e.target.selectedIndex);
	});
	$("input").on('input',function(e)  
	{  
		if(e.target.value ==""){
			var info1 = "<div style='color:black;'>值不能为空！</div>";
			if(e.target.attributes.currentValue){
				e.target.value = e.target.attributes.currentValue.value;
			}else{
				e.target.value = 0;
			}
			warning(info1);
			return;
		}
		if(e.target.max){
			//当输入框的输入内容不在有效范围内，则提示重新输入
			if(Number(e.target.value)>Number(e.target.max) || Number(e.target.value) < Number(e.target.min)){
				var info = "<div style='color:black;'>请输入有效范围的数字:"+e.target.min+"-"+e.target.max+ "</div>";
				if(e.target.attributes.currentValue){
					e.target.value = e.target.attributes.currentValue.value;
				}else{
					e.target.value = 0;
				}
				warning(info);
		        return false;
			}
		}
		if(e.target.id=="MANIputStorageId404"){
		 localStorage.setItem('MANIputStorage404', e.target.value);
		}
	}); 
	
	$(":checkbox").click(function(e){
		localStorage.setItem(e.target.className, e.target.checked);
	});
}

//根據選中的色燈顯示對應的圖片
//选择灯的类型，改变显示的图片,共三处色灯变化，复杂模式对应一二系色灯，简单模式色灯变化；code代表色灯编码，light；代码哪一处色灯变化
function setLightColor(code,light){
	var srcpath = "../../images/elements/L.png";
	    if (code==1) {srcpath = "../../images/elements/L3.png";} 
          else if (code==2) {srcpath = "../../images/elements/L2.png";}
          else if (code==3) {srcpath = "../../images/elements/L.png";}
          else if (code==4) {srcpath = "../../images/elements/LH.png";}
          else if (code==5) {srcpath = "../../images/elements/LH2.png";}
          else if (code==6) {srcpath = "../../images/elements/U.png";}
          else if (code==7) {srcpath = "../../images/elements/U2S.gif";}
          else if (code==8) {srcpath = "../../images/elements/U2.png";}
          else if (code==9) {srcpath = "../../images/elements/U3.png";}
          else if (code==10) {srcpath = "../../images/elements/UUS.gif";}
          else if (code==11) {srcpath = "../../images/elements/UU.png";}
          else if (code==12) {srcpath = "../../images/elements/HUS.gif";}
          else if (code==13) {srcpath = "../../images/elements/HU.png";}
          else if (code==14) {srcpath = "../../images/elements/HY.png";}
          else if (code==15) {srcpath = "../../images/elements/L4.png";}
          else if (code==16) {srcpath = "../../images/elements/L5.png";}
          else if (code==17) {srcpath = "../../images/elements/WZ.png";}//
          else if (code==18) {srcpath = "../../images/elements/27.9.png";}
          else if (code==19) {srcpath = "../../images/elements/H.png";}
          else if (code==20) {srcpath = "../../images/elements/B.png";}  
		 var img = $("<img src='"+srcpath+"' alt=''>");
		 var id = ".dengs";
		 if(light=="dengone"){
			 id = ".semaphoresOne";
		 }else if(light=="dengtwo"){
			 id=".semaphoresTwo";
		 }
		 $(id).empty();
		 $(id).append(img);
 }

//state:返回的信息，type：0为失败，1位成功
//操作一次，则在操作日志中显示出来
function addSimulationManualLog(state,type,id,value){
	var content='';
	var result = "失败";
	var resultCss="manualLogFai";
	if(type == 1){
		resultCss="manualLogSuc";
		result = "成功";
	}
	content = "<div class='manualLogCell'><div class='logLeft'>"+
	getLastTime()+"</div><div class='logRight'><div><span>发送信号：</span><span>"+
	'设定参数 "'+getManualStepById(id)+'" 为 '+value+"</span></div><div><span>返回状态：</span><span class='"+resultCss+"'>设定'"+result+"'，"+
	state+"</span></div></div></div>";
	//仿真测试通过websocket发送操作日字，用于广播访客看的信息；手动测试通过ajax发送操作日字，用于回放当前任务
	if(roleType == 0){
		getAllDataWebSocket.send("broadcast:"+content);
	}else if(roleType == 2){
		sendLog(content);
		$("#manualLogIframe").contents().find("#manualLogId").append(content);
		if(!$("#manualLogIframe")[0].contentWindow){
			return;
		}
		$("#manualLogIframe")[0].contentWindow.scrollWindow();
	}
}

//操作日志发送到后台
function sendLog(content){
	$.ajax({
		"url" : "../../../manualTest/addManualTestLog",
		"type" : "post",
		"data" : { 
			taskId:addManualId,
			testLog:content
		},
		"dataType" : "json",
		"success" : function(result) {
			console.log(result);
		},
		"error" : function(data) {
		}
	});
}
/**
 * 广播一串信息
 * @param str
 * @returns
 */
function addManualLogNew(str){
	if(str == undefined){
		return;
	}
	var content='';
	content = content+str;
	$("#manualLogIframe").contents().find("#manualLogId").append(content);
	if(!$("#manualLogIframe")[0].contentWindow){
		return;
	}
	$("#manualLogIframe")[0].contentWindow.scrollWindow();
}



//通过id获取该操作的名称
function getManualStepById(id){
	var stepName = '';
	if(!manualStepArray){
		return;
	}
	for(var i = 0;i<manualStepArray.length;i++){
		if(!manualStepArray[i]['id']){
			continue;
		}
		if(id == manualStepArray[i]['id']){
			stepName = manualStepArray[i]['step'];
			break;
		}
	}
	return stepName;
}

//获取手工测试的操作名称
function getManualStep(){
	$.ajax({
        url: "../../textcommon/xml/manualLogStep.xml",
        dataType: 'xml',
        type: 'GET',
        timeout: 2000,
        error: function(xml)
        {
            alert("加载XML 文件出错！");
        },
        success: function(xml)
        {
        	manualStepArray = [];
            $(xml).find("step").each(function(i)
            {
            	var id = $(this).attr("id");
            	var step = $(this).children("content").text();
            	manualStepArray.push({id:id,step:step});
            });
        }
    });
}

//更新任务和平台的状态
function updateTaskPlatform(platformId,manualId,platformStatus){
	$.ajax({
		"url": "../../../manualTest/updateManualAndPlatformStatus",
		"type": "post",
		"data": {
			"manualId": manualId,
			"manualstatus":1,
			"platformId":platformId,
			"platformStatus":platformStatus
		},
		"success": function (result) {
			console.log(result);
			if (result.flag == 0) {
				initASTSData(platformId);
			} else {
				ajaxClose();
				addAlert(result.content);
			}
		},
		"error": function () {
			ajaxClose();
			addAlert("任务和平台状态修改异常！");
		}
	});
}
function sendGuoJi(destination, signalType, signalValue) { // 获取单选框的键值对发送到后台
	var content='';
	if(destination == 1 && signalType == 43){
		content = "Ⅰ系 过机 点击 ";
	}
	if(destination == 2 && signalType == 43){
		content = "Ⅱ系 过机 点击";
	}
	if(destination == 3 && signalType == 43){
		content = "点击";
	}
	sendTestSignal(destination, signalType, signalValue, "guoji", content);
	}

//停止录制按点击
function stopLuZhi(){
	var content = "<div class='manualLogCell'>停止录制！</div>";
	$("#manualLogIframe").contents().find("#manualLogId").append(content);
	$.ajax({
		type: "POST",
		url: "../../../manualTest/stopRecord",
		data: {
			platFormId: platformId
		},
		success: function(data) {
			setSJHZBool = false;
			setXZCXBool = false;
			setGGBool = false;
			setStopLZBool = true;
			MaskIt("#autoMaticTesting");
			$(".divMask").css("width",$(document).width());
			updateLZButtonState();
			ajaxClose();
			addBaseCase(data.content);
		},
		error: function(err) {
			danger("服务器异常!");
		}
	});
}

//弹出新增基本用例页面
function addBaseCase(content) {
	BootstrapDialog.show({
		title: '新增录制基本用例信息',
		closable:false,
		closeByBackdrop:false,
		closeByKeyboard:false,
		message: $("<form class='form-inline' style='height:500px;color:#000000'></form>").load('../../test/html/baseCaseAddManual.html'),
		onshown: function() {
			//初始化新增页面用例类型的值
			caseTypeInit($("#caseType"), false);
		},
		buttons: [{
			icon: 'glyphicon glyphicon-check',
			label: '确定',
			cssClass: 'btn-primary',
			autospin: true,
			action: function(dialogRef) {
				var caseType = $("#caseType").val();
				var caseName = $("#caseName").val();
				var caseContent = $("#caseContent").val();
				var caseCode  = $("#caseCode").val();
				var selectTreeObj = $.fn.zTree.getZTreeObj("treeAdd").getCheckedNodes(true);				
				// 判断类型是否为空
				if (caseType == "") {
					warning("<div style='color:black;'>请选择基本用例类型!</div>");
					return false;
				}
				//判断选中树节点是否为空
				
				if(selectTreeObj.length==0){
					warning("<div style='color:black;'>请选择基本用例所属树节点位置!</div>");
					return false;
				}
				// 判断名称是否为空
				if (caseName == "") {
					warning("<div style='color:black;'>基本用例名称不能为空!</div>");
					return false;
				}
				//判断基本用例编号为空
				if(caseCode == ""){
					warning("<div style='color:black;'>基本用例编号不能为空!</div>");
					return false;
				}
				// 判断描述是否为空
				if (caseContent == "") {
					warning("<div style='color:black;'>基本用例描述不能为空!</div>");
					return false;
				}
				/* ajax向后台发送新建用例的数据 */
				$.ajax({
					type: "POST",
					url: "../../../manualTest/setScriptToCase",
					data: {
						id:czxlid,
						type: caseType,
						treeId:selectTreeObj[0].id,
						name: caseName,
						content: caseContent,
						scriptContent:content,
						code:caseCode,
						initCondition:JSON.stringify(allActionScript)
					},
					success: function(data) {
						var flag = data.flag;
						addBaseCaseId = data.content;
						if (flag == 0) {
							BootstrapDialog.alert({
								title: '提示',
								message: "<div style='color:black;'>用例添加成功!</div>",
								type: BootstrapDialog.TYPE_SUCCESS
							});
							setTimeout(function() {
								BootstrapDialog.closeAll();
								//新建成功后，返回上一页
								history.back(-1);
							}, 800);
						}else{
							danger("<div style='color:black;'>"+data.errorInfo+"</div>");
						}
					},
					error: function(err) {
						danger("<div style='color:black;'>服务器异常!</div>");
					}
				});
			}
		}]
	});
}
//树形结构展示功能模块
var zTree;
var setting = {
	view : {
		dblClickExpand : true,// 双击节点时，是否自动展开父节点的标识
		showLine : true,// 是否显示节点之间的连线
		fontCss : {
			'color' : 'black',
			'font-weight' : 'bold'
		},// 字体样式函数
		selectedMulti : true
	// 设置是否允许同时选中多个节点
	},
	check : {
		enable : true,// 每个节点上是否显示radio
		autoCheckTrigger: true,
		chkStyle: "radio",
		radioType: "all" 
	},
	data : {
		simpleData : {// 简单数据模式
			enable : true
		}
	},
	callback : {
		beforeClick : function(treeId, treeNode) {}
	}
};
 function changeTree(value){
	 var treeNodes;
		$.ajax({
			async : false,// 是否异步
			cache : false,// 是否使用缓存
			type : 'POST',// 请求方式：post
			data:{pid:value,base:false},
			dataType : 'json',// 数据传输格式：json
			url : "../../../basecaseTree/queryBaseCaseTree",// 请求的action路径
			error : function() {
				// 请求失败处理函数
				warning("请求失败！");
			},
			success : function(data) {
				if(data.flag==0){
					treeNodes = data.content;// 把后台封装好的简单Json格式赋给treeNodes
					var t = $("#treeAdd");
					t = $.fn.zTree.init(t, setting, treeNodes);
					t.expandAll(true);
				}else{
					warning(data.errorInfo);
				}
			}
		});
 }
//新增基本用例
function caseTypeInit(comboContainer, type) {
	//comboContainer为combobox所在的容器
	//type:是否支持输入自动过滤选项功能
	/* 用例类别数据获取 */
	$.ajax({
		url: '../../../basecase/getBaseCaseTypeList',
		type: "GET",
		success: function(obj) {
			if(obj.flag==0){
				var resultc = obj.content;
				comboContainer.append("<option value='' selected='selected'>请选择</option>");
				for (var i = 0; i < resultc.length; i++) {
					/* 创建option并插入数据 */
					comboContainer.append(
							"<option value='" + resultc[i].dictdataCode + "'>" +
							resultc[i].dictdataName + "</option>");
				}
				if (type) {
					comboContainer.combobox();
				}
			}else{
				danger(obj.errorInfo);
			}
		},
		error: function(error) {
			danger("查询基本用例类型失败");
		}
	});
}

//开始录制时的设置色灯下拉的监听
function lzoptionChange(event) { // 制式，方向，信号灯的三个下拉框选中
	var name = event.className; //下拉框的类名
	var signalType='';
	var signalValue = '';
	if ($("." + name + " option:selected").attr("destination") !== undefined) { // 排除第一个空选项
		signalType = $("." + name + " option:selected").attr("signalType");
		signalValue = $("." + name + " option:selected").attr("signalValue");
	} else {
		return false;
	}
	changeInitData(signalType,signalValue);
}

//开始录制时的设置输入框的监听
function lzSetData(signalType, event) { // input值发生变化时，获取最新的值
	//当输入框的输入内容不在有效范围内，则提示重新输入
	if (Number(event.target.value) > Number(event.target.max) || Number(event.target.value) < Number(event.target.min)) {
		var info = "<div style='color:black;'>请输入有效范围的数字:"+e.target.min+"-"+e.target.max+ "</div>";
		if(e.target.attributes.currentValue){
			e.target.value = e.target.attributes.currentValue.value;
		}else{
			e.target.value = 0;
		}
		warning(info);
		return false;
	}
	changeInitData(signalType,event.target.value);
}

//添加数据到设置参数的数组中
function changeInitData(type,value){
	var bool = false;
	for(var i = 0;i<initSetDataArray.length;i++){
		if(initSetDataArray[i].signalType ==type){
			bool = true;
			initSetDataArray[i].value = value;
			break;
		}
	}
	
	if(!bool){
		initSetDataArray.push({signalType:type,value:value});
	}
}

function updateLZButtonState(){
	$('#sjChange').addClass('luzhiBtnCell');
	$('#setCX').removeClass('luzhiBtnCell');
	$('#setGZ').removeClass('luzhiBtnCell');
	$('#stopLuZhiBtn').removeClass('luzhiBtnCell');
	
	$('#sjChange').attr('disabled',false);
	$('#setCX').attr('disabled',true);
	$('#setGZ').attr('disabled',true);
	$('#stopLuZhiBtn').attr('disabled',true);
	
	//完成数据换装，并且没有完成选择车型时，选择车型按钮可以点击
	if(setSJHZBool){
		$('#sjChange').removeClass('luzhiBtnCell');
		$('#sjChange').attr('disabled',true);
		if(!setXZCXBool){
			$('#setCX').addClass('luzhiBtnCell');
			$('#setCX').attr('disabled',false);
		}
	}
	
	//完成选择车型，并且没有完成设置跟踪项时，设置跟踪项按钮可以点击
	if(setXZCXBool){
		$('#setCX').removeClass('luzhiBtnCell');
		$('#setCX').attr('disabled',true);
		if(!setGGBool){
			$('#setGZ').addClass('luzhiBtnCell');
			$('#setGZ').attr('disabled',false);
		}
	}
	
	//完成设置跟踪项，并且没有完成停止录制时，停止录制按钮可以点击
	if(setGGBool){
		$('#setGZ').removeClass('luzhiBtnCell');
		$('#setGZ').attr('disabled',true);
		if(!setStopLZBool){
			$('#stopLuZhiBtn').addClass('luzhiBtnCell');
			$('#stopLuZhiBtn').attr('disabled',false);
		}
	}
}
//单选框框選中變化方法
function radioChange(event) { 
	var name = event.className; 
	var destination = $("." + name).attr("destination");
	var signalType = $("." + name).attr("signalType");
	var signalValue = $("." + name).attr("signalValue");
	sendTestSignal(destination, signalType, signalValue, name, "选中"); // 数据发送到后台
}
